#include <iostream>
#define MAXSIZE 50
using namespace std;

int g[MAXSIZE][MAXSIZE];
int a[4][2] = { {-1,0},{0,-1},{1,0},{0,1} };
int cnt = 0;
int w,h;
bool is_can_visit(int x,int y){
	if( x>=0 && x<h && y>=0 && y<w && g[x][y]==0 ) return true;
	else return false;
}
void bfs(int x,int y){
	g[x][y] = 1;cnt++;
	for(int i=0; i<4; i++ ){
		int x_w = a[i][0] + x, y_w = a[i][1] + y;
		if( is_can_visit(x_w,y_w) ) bfs(x_w,y_w);
	}
}
int main(){
	freopen("in.txt","r",stdin);
	while( true ){
		cin >> w >> h;
		if( w==0 && h==0 ) break;
		int x,y;
		for(int i=0; i<h; i++)
			for(int j=0; j<w; j++){
				char c;
				cin >> c;
				if( c=='.' ) g[i][j] = 0;
				else if( c=='#' ) g[i][j] = 1;
				else{
					x = i;
					y = j;
				}
			}
		bfs(x,y);
		cout << cnt << endl;
		cnt = 0;
		for(int i=0; i<h; i++)
			for(int j=0; j<w; j++)
				g[i][j] = 0;
	}
	return 0;
}
